Images and pictures affect all of us every day in ways large and small. Pictures can have incredible impact, prompting people to buy a product, dress in a certain way, do or not do certain things, laugh or cry, and sometimes change their lives in radical ways. Some pictures are truly unforgettable.
The pictures hanging in art museums are one example of how images can be used to express complex, artistic ideas. However, because of their effectiveness, pictures and images are useful to communicate all sorts of complicated ideas and concepts. For example, a chart or an animation may allow someone to visualize and understand complicated concepts and relationships that only experts can otherwise grasp.
Images are also a very efficient way of conveying ideas. A picture is often worth at least a thousand words. This is why, for example, machinists work from blueprints rather than oral descriptions. Without a detailed blueprint, a machinist might construct a part very different from the one the design engineer has in mind.
Because of the importance of images and pictures in communicating ideas, human history has been filled with attempts to improve drawing tools and techniques. For example, centuries have been devoted to improving the colors and qualities of inks and paints. The invention of the lead pencil was a major improvement in drawing tools. But, no prior drawing tool compares in versatility and power to modern computer graphics.
Computer graphics (techniques for using computers to create images) have revolutionized images and pictures. It is now possible to create, with a computer, images so real that they appear to be photographs of actual real world scenes. Hollywood uses computer-generated special effects to produce realistic film sequences of space travel, dinosaurs, monsters, and other miraculous images. On a more mundane level, a graphic arts designer creating a corporate logo or a draftsman creating blueprints of a new car part may often nowadays use a computer instead of pencil and paper.
The world of computer graphics is divided into two fundamentally different types of computer graphics systems: two-dimensional (2-D) and three-dimensional (3-D). 2-D and 3-D systems each produce images on the flat, two-dimensional surface of a computer display or other imaging device. However, 2-D and 3-D systems are fundamentally different in the way they represent and process images.
A 2-D system can be analogized to a bulletin board. Each object has height, width, and up/down and left/right positions in a flat 2-D plane. The 2-D representation of an object is thus analogous to a flat image fragment like cardboard cut-outs a class of first graders might use to create a bulletin board display. 2-D computer graphics are very useful for drawing certain types of images (e.g., flat views of parts to be manufactured, blueprints and the like), but suffer from lack of realism and flexibility. Because each 2-D object has only height and width, it is difficult for 2-D computer graphics techniques to show realistic scenes from a variety of different viewpoints. Additionally, since lighting and reflection are essentially 3-D phenomena, it is very difficult to provide realistic lighting of a scene represented in 2-D. Furthermore, interactions between objects in a 2-D world are constrained and often not realistic.
In contrast, a 3-D computer graphics system represents each object in a scene in three dimensions. In a 3-D representation, each object has a height, a width and a depth--and a 3-D position within a 3-D "universe." The computer must do more processing and perform more complex calculations because it must keep track of three dimensions instead of two--but much more realistic images can result. Using 3-D computer graphics, the computer can show what an object looks like from any arbitrary viewing angle. For example, a 3-D computer model of an airplane might permit the computer operator to do a virtual "walk around" of the airplane, seeing it from the left side, the right side, the top, the front, the back, undernath--and even inside it. 3-D graphics also allow more realistic lighting effects to accommodate different directions and types of lights. Even more significantly, 3-D computer graphics can handle interactions between objects in much more sophisticated and realistic ways. Since a 3-D system keeps track of depth as well as height and width, it can allow one object to pass through another object so that it is partially within and partially outside of the object (e.g., a dart sticking out of a dart board; a bird that is behind, in front of, or partially within and partially outside of a tree; or a pipe fitting the end of which has been inserted into the flange of another part).
FIGS. 1A-1E show examples of images produced by a 3-D computer graphics embodiment in accordance with this invention. The FIG. 1A blueprint and associated part shows the contrast between 2-D (the background) and 3-D (a 3-D model of the part) with realistic shadowing and lighting. The parlor scene of FIG. 1B has realistic depth, lighting and shadowing not generally possible using a 2-D system. The FIG. 1C collage shows how a computer can create a realistic looking 3-D scene that couldn't exist in the real world. The FIG. 1D illustration of flowers shows how joinings between objects can be rendered realistically using a 3-D system. The FIG. 1E "landscape" of a game of jacks shows realistic shadowing and depth.
Ease of use has always been a significant problem in computer graphics. Many early computer graphics systems could be operated only by skilled computer programmers who understood--and could write in--the particular language the computer understands. In such early systems, a computer programmer would define an image by specifying a series of commands directing the computer to draw each image within a scene. A problem with this approach was that it was very time consuming and could only be done by an expert.
Much work has been done since then to make computer graphics easier to use. For example, the "mouse" pointing device was developed in the early 1980s as a way to allow a computer user to manipulate images on a display screen without having to key in commands using a keyboard. Additionally, advances in graphical user interface (GUI) technology made such systems more accessible to users other than skilled computer programmers. Although such advances in user friendliness have made computer graphics more accessible, even recent computer graphics systems and software capable of providing realistic images are generally difficult to use and require a high degree of skill to successfully operate to produce realistic images.
The ways in which the computer represents 3-D objects has a direct impact on many aspects of a computer graphics system--including how easy or difficult it is to use the system. CAD systems in the past have modeled solids with constructive solid geometry (CSG) trees, hierarchical assembly structures and with some instancing. But further improvements are still needed and desirable.
This invention provides techniques for enhancing, expanding and extending prior computer graphics 3-D object representations, and to provide enhanced efficient use and processing of the representations. These improvements make it easier to use the computer graphics system and have other benefits as well.
In accordance with one aspect provided by this invention, shapes and solids ("shapes") modeled by a 3-D computer graphics system are provided with "intelligence." The shape typically includes geometric information (e.g., size and positional information), but may also include a wide variety of additional parameters--some of which may have nothing to do with the shape's geometry or display characteristics. For example, some intelligent shapes may include parameters specifying how the shape is to interact with other shapes--allowing the 3-D shapes to be manipulated more intuitively using a graphical user interface providing "drag and drop" capabilities. As one specific example, an intelligent shape may "know" how to land and slide over other shapes, how to snap into place and interlock with other shapes, how to maintain certain distances from other shapes, that a shape should slide on a surface or a certain distance away from a surface. In architectural drawing, for example, an intelligent shape modeling a chair could specify that the same scene must include a matching chair; that the chair should be spaced a minimum distance from a wall; that when the chair is graphically manipulated, it is to slide along the floor while maintaining contact with the floor; and that if purchased, the (corresponding real life) chair will take eight to twelve weeks for delivery.
This ability to specify the ways in which a shape interacts with other shapes provides great advantages in terms of ease of use. Using the model of a chair as an example, a user can use a mouse or other pointing device and an associated graphical interface to "drag" the chair from one place to another within a model room. Meanwhile, the chair "knows" that it is always to remain in contact with the floor and to stay in a particular orientation relative to the room (i.e., so it never floats above the floor and never tips over). This additional "intelligent" control reduces the number of factors the user must worry about, saves a lot of time and user frustration, and allows even non-technical, unskilled users to rapidly and efficiently create impressive images.
The present invention thus provides shape representations and associated architectures that allow shape properties to be operatively interconnected to behave "intelligently" in response to user interaction or other external events. The connections and relationships between the shape properties (data) allow the shapes to have their own unique response appropriate to the shape itself. For example, lengthening an intelligent shape representing a staircase may cause more treads to appear--rather than widening each tread to some unnatural, impractical width. A cube shape can know that if any dimension is changed, all dimensions must be changed so it remains a cube. A dart shape can know that it is to attach itself to another surface at its point and that its point is to penetrate a certain distance into that other surface.
The "intelligent" shapes may also provide multiple representations of the same 3-D object. For example, the "complete" representation of a shape or object may include a variety of information for a variety of different purposes. One representation (precise surfaces) may only be needed by manufacturing engineers. Some of the characteristics (e.g., position, color, texture, approximate "facet" form, etc.) relating to the geometry of the shape may be used for drawing an image. Some shapes can be used to intelligently modify the geometry of other shapes (e.g., a hole can be drilled into a shape, a block can be welded to another block, etc.) Other shape characteristics (e.g., minimum distance from the wall, a requirement to stay in contact with the floor, a requirement or capability to "snap in" and interlock with another shape automatically, etc.) may only be needed when the user is manipulating the shape to establish its new position in the scene. Still other shape properties (e.g., whether it is hard or soft, whether it bounces or breaks, whether it pulls or attracts another shape to it (undeformed or by deforming the other shape) as it comes close to it, etc.) may relate to the dynamic behavior of the shape when the shape is used in an animation or the like. Still other shape properties (e.g., it will take 8 to 12 weeks to order a chair) may be needed only when the item represented by the shape is purchased electronically or otherwise. Access to various levels of representations can be limited depending on privileges granted to content users (for example, a buyer of a GE refrigerator doesn't care about the details of the motor, he or she just wants to know its power and possibly its specs if he ever needs to replace it).
A component-based architecture provided in accordance with this invention may be used to expose any of multiple, alternate representations of the same shape depending on the particular need or application. The ability of intelligent shapes to be represented by a wide variety of different types of information without degrading the efficiency in which the representations can be accessed and manipulated for different purposes is very powerful in providing optimal performance and flexibility. Multiple representations of a shape can also be used to provide an "intelligent load" that loads only those components necessary for a particular task. For example, if the shape is being accessed only by reference through another shape, only those components and associated data pertaining to the specific reference (e.g., certain geometrical characteristics) may need to be accessed. A user merely interested in generating an image of a predefined scene may only need to access and load those shape components required for imaging. Un-needed components need not be loaded or even read. This multiple representation and intelligent load feature is especially powerful and advantageous in remote interactive imaging applications (e.g., via the Internet) where data transfer and/or load times must be minimized.
Various different shape properties may be maintained in (or through) individual independent "components" that interface with a general purpose shape bus. Additionally, a component-based representation substantially simplifies the complexity of the overall environment and provides great flexibility by permitting the shape representation to be freely extended on an as-needed basis. In accordance with one specific aspect provided by the present invention, the components may "plug into" the bus using a generic interface or "socket" configuration--permitting use of a wide variety of different component types that can change from one application to the next. These components may include (and/or reference) data as well as executable code, and may respond to messages or "events" on the bus. The components may also broadcast or send messages to other components (or other structures) via the bus.
Components need only respond to bus messages that concern them. This ability of different components within the representation to react or respond to (only) events that concern them provides enhanced flexibility and efficiency. For example, components defining dynamic behavior may ignore messages pertaining to the generation of static images. For example, only a surface texture component (and no others) may need to respond to a message that the user has selected a different surface texture for the shape.
In accordance with another aspect provided by the present invention, different components may be independent of one another so they can each be used with or without other components. While most shapes will typically have at least basic geometry components (e.g., size and position), even these components may be independent of one another and of any other components that may be used. Component independence facilitates multiple representations and also enhances the modular nature of the representation.
In accordance with yet another feature, the components in the component-based architecture provided by this invention are stored and maintained separately from at least some data to which they refer. Thus, the representation of a shape may be stored in two parts: a content file defining the various components, and a data file storing the data for each of the defined components. This storage arrangement enhances the ability of multiple shapes to efficiently reference one another without introducing processing inefficiencies. For example, multiple instances of the same generic shape (e.g., the four wheels of a car) may have essentially identical components but differ in the positional (and possibly other) data to which the components refer. This technique also facilitates one shape efficiently referencing another shape (e.g., increasing the size of a car wheel also increases the size of the hubcap). The reusability of shapes, components and data facilitated by this approach provides for a more compact representation and provides further increases in efficiency.
In accordance with yet another feature provided by this invention, an optional, precise geometry component may be provided as part of a shape's representation. Graphics arts designers typically have no need for or interest in the precise dimensions of a 3-D model--but such precise dimensions may be absolutely critical to a machine part designer. Precise geometry components need not be accessed for normal "imaging" on a display, but may be used to provide additional precision (e.g., for automatically rendering the solid model in blueprint form). In one specific example, the user can control whether or not a precise geometry component is maintained. In another example, there can be different versions of a computer graphics system--some that support precise geometry capabilities and some that don't.
By way of summary and still further explanation, the present invention provides the following example advantageous features:
A shape modeled in accordance with the present invention provides a simple, open, efficient, customizable, hierarchical, dynamic, and extensible object that may be used to define a 3-D object. PA1 Intuitive intelligent shape 3-D drawing capabilities. PA1 Simply drag and drop intelligent 3-D shapes that know how to land and slide over each other. PA1 The programmed intelligence of shapes lets them respond to changes and interact with other shapes in logical, even thoughtful ways. Shapes routinely slide around and blend into each other without special cues from the user. PA1 The intelligent shapes "know" about each other; if the user drags a box onto a slab, the two shapes can orient themselves similarly in 3-D space and automatically group into a model. PA1 The shapes contain attachment points which know how to glue to each other. PA1 Shape representation includes information beyond geometry. PA1 Multiple representations of the same 3-D object. PA1 Multiple representation may include image (e.g., facet, curve, surface finish, text), physical (e.g., extrude, turn, sweep, loft, history), functional (e.g., anchor, precise dimensions, variable), and behavioral (e.g., static and dynamic). PA1 Properties can specify dynamic behavior (e.g., how to snap objects together, animation behavior, etc.) PA1 Capable of precise representation for manufacturing purposes. PA1 Hierarchical representation. PA1 Advanced intelligent shape properties include blending, chamfering, tapering, shelling and capping. PA1 Intelligent shapes align, move, size, rotate, and tilt easily using a "snap in" capability that snaps them to tangencies, midpoints, edges and attachment points. PA1 Possible to have behavior components defining characteristics such as, for example, motion properties for acceleration and gravity. PA1 Multiple instances for reusability. PA1 Simple numeric entry for size and position. PA1 Multiple levels of editing expose different shape characteristics to provide ease of use. PA1 Representation is extensible. PA1 Properties establish relationships between objects. PA1 Independent components. PA1 Components may be defined by a set of named data fields; expressions can relate fields together. PA1 Hierarchical group component defined structure. PA1 Components are dynamic; they can be added and/or removed at run time in response to user requests. PA1 Component types can be added at any time. PA1 Components can be shared between shapes (instancing). PA1 Event driven--component functionality such as draw triggered by signals from an event bus. PA1 A bus provides conflict resolution as well as broadcast send and receive capabilities. PA1 Intelligent loading. PA1 Intelligent shapes are fully customizable by the user. PA1 In one example, any OLE automation scripting language can completely define a shape. PA1 3-D body and facet data can be compiled from simple definitions and optionally saved.